/**
 * Http 相关工具类
 */
export class HttpUtils {
    /**
     * 判断请求来源是否是本地或局域网地址
     * @param origin - 请求来源
     * @returns {Boolean}
     */
    static isLocalOrLanOrigin(origin: string): boolean {
        if (!origin) return false;

        // 匹配 localhost 或者 127.0.0.1 的 http 或 https 协议
        const localPattern = /^(http|https):\/\/(localhost|127\.0\.0\.1)(:\d+)?$/;

        // 匹配有效的IP段，值在0-255之间
        const validIpSegment = "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])";

        // 匹配局域网 IP 地址（私有 IP 范围）的 http 或 https 协议，并确保每个部分都在 0-255 之间
        const lanPattern = new RegExp(
            `^(http|https):\\/\\/((192\\.168\\.${validIpSegment}\\.${validIpSegment})|(10\\.${validIpSegment}\\.${validIpSegment}\\.${validIpSegment})|(172\\.(1[6-9]|2[0-9]|3[0-1])\\.${validIpSegment}\\.${validIpSegment}))(:\\d+)?$`
        );

        return localPattern.test(origin) || lanPattern.test(origin);
    }
}
